package Demo2;

class Base{
    int a;
    int b;
    public void methodA(){
        System.out.println("调用父类的methodA");
    }
    public void methodB(){
        System.out.println("滴哦有父类的methodB");
    }
}


public class Devived extends Base{
    int a;
    char b;
    //与父类中methodA构成重载
    public void methodA(int a) {
        System.out.println("调用子类的methodA");
    }

    //与基类中methodB构成重写
    public void methodB(){
        System.out.println("调用子类的methodB");
    }

    public void methodC(){
        //对于同名的成员变量，直接访问时，访问的是都是子类的
        a = 100; //等价于 this.a = 100
        b = 101; //等价于 this.b = 101
        //注意：this是当前对象的引用

        //访问父类的成员变量时，需要借助super关键字
        //super时获取到子类对象中从基类继承下来的部分
        super.a = 200;
        super.b = 201;

        //父类和子类构成重载的方法，直接可以通过参数到列表区分清访问父类还是子类方法
        methodA(); //访问父类
        methodA(20); //访问子类

        //如果在子类中要访问重写的基类方法，则需要借助super关键字
        methodB();//直接访问，则访问的是子类中的methodB，基类无法访问到
        super.methodB(); //访问基类的methodB
    }

    public static void main(String[] args) {
        Devived devived = new Devived();
        devived.methodC();
    }
}
